
out vec4 sk_FragColor;
uniform vec4 colorGreen;
uniform vec4 colorRed;
vec4 main() {
    bool ok = true;
    int i = 5;
    i++;
    ok = ok && i++ == 6;
    ok = ok && i == 7;
    ok = ok && i-- == 7;
    ok = ok && i == 6;
    i--;
    ok = ok && i == 5;
    float f = 0.5;
    f++;
    ok = ok && f++ == 1.5;
    ok = ok && f == 2.5;
    ok = ok && f-- == 2.5;
    ok = ok && f == 1.5;
    f--;
    ok = ok && f == 0.5;
    vec2 f2 = vec2(0.5);
    f2.x++;
    ok = ok && f2.x++ == 1.5;
    ok = ok && f2.x == 2.5;
    ok = ok && f2.x-- == 2.5;
    ok = ok && f2.x == 1.5;
    f2.x--;
    ok = ok && f2.x == 0.5;
    f2++;
    ok = ok && f2++ == vec2(1.5);
    ok = ok && f2 == vec2(2.5);
    ok = ok && f2-- == vec2(2.5);
    ok = ok && f2 == vec2(1.5);
    f2--;
    ok = ok && f2 == vec2(0.5);
    ivec4 i4 = ivec4(7, 8, 9, 10);
    i4++;
    ok = ok && i4++ == ivec4(8, 9, 10, 11);
    ok = ok && i4 == ivec4(9, 10, 11, 12);
    ok = ok && i4-- == ivec4(9, 10, 11, 12);
    ok = ok && i4 == ivec4(8, 9, 10, 11);
    i4--;
    ok = ok && i4 == ivec4(7, 8, 9, 10);
    mat3 m3x3 = mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
    m3x3++;
    ok = ok && m3x3++ == mat3(2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0);
    ok = ok && m3x3 == mat3(3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0);
    ok = ok && m3x3-- == mat3(3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0);
    ok = ok && m3x3 == mat3(2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0);
    m3x3--;
    ok = ok && m3x3 == mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
    return ok ? colorGreen : colorRed;
}
